package com.project.mapper;

import com.project.bean.ProductBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

public interface IProductMapper {
    /**
     * 添加商品
     * @param productBean 商品对象
     */
    public void add(ProductBean productBean);

    /**
     * 根据id删除商品
     * @param id 商品编号
     */
    public void del(int id);

    /**
     * 根据商品id修改价格
     * @param id 商品编号
     * @param price 新单价
     */
    public void update(@Param("id") int id,@Param("price") int price);

    /**
     * 根据id查询商品
     * @param id 商品编号
     * @return 返回商品对象
     */
    public ProductBean findById(int id);
    /**
     *  5、按商品名、价格范围 动态条件分页查询商品
     * @param startPage 开始条数
     * @param pageSize 条数
     * @param name 商品名
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @return 返回符合条件的分页对象
     */
    public List<ProductBean> cutByNamePrice(@Param("startPage") Integer startPage,
          @Param("pageSize") Integer pageSize, @Param("name") String name,
          @Param("minPrice") Integer minPrice, @Param("maxPrice") Integer maxPrice);

    /**
     * 6、按厂家、生产日期时间段，动态条件分页查询商品
     * @param startPage 开始条数
     * @param pageSize 条数
     * @param factory 厂家
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 返回符合条件的分页对象
     */
    public List<ProductBean> cutByItem(@Param("startPage") Integer startPage,
         @Param("pageSize") Integer pageSize, @Param("factory") String factory,
          @Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate
    );

    public int countByName(
            @Param("name") String name,
            @Param("minPrice") Integer minPrice, @Param("maxPrice")
                    int maxPrice
    );

    public int countItem(
            @Param("factory") String factory,
            @Param("startDate") LocalDate startDate,
            @Param("endDate") LocalDate endDate
    );
}
